1
สรุปผลการเรียนรายวิชา
DSAI2202Lab 5: Grouping and Summarising Data

งานทะเบียนของ UniLearn ต้องการรายงานผลการเรียนรายวิชาสำหรับภาคการศึกษาปี 2026 (สมมติ) ให้สรุป การลงทะเบียนที่ยังใช้งานอยู่โดยรวมนักศึกษาที่ไม่มีการบันทึกคะแนนไว้

เตรียมข้อมูล PostgreSQL

  1. เปิดฐานข้อมูลสำหรับฝึกใน pgAdmin Query Tool เปิด Auto-commit ไว้
  2. เลือก Open File แล้วเลือกไฟล์ lab5_setup.sql ที่จัดเตรียมไว้ให้แยกต่างหาก
  3. เรียกใช้ไฟล์ทั้งหมด ไฟล์นั้นจะเลือก schema lab5 ใน Query Tool เดียวกัน ให้คัดลอกคำสั่งตรวจสอบข้อมูลจากแท็บ Code แล้วตรวจสอบว่าได้ 36 แถว

หนึ่งแถวหมายถึงอะไร?

หนึ่งแถวคือ การลงทะเบียนของนักศึกษาหนึ่งคนในหนึ่งรายวิชา S101 ลงทะเบียนสามรายวิชา S101 จึงปรากฏสามครั้ง จำนวนการลงทะเบียนและจำนวนนักศึกษาอาจไม่เท่ากัน

สร้างรายงานสำหรับงานทะเบียน

  • นับจำนวนการลงทะเบียน คะแนนที่บันทึกไว้ และจำนวนนักศึกษาที่ไม่ซ้ำ
  • คำนวณผลรวมและค่าเฉลี่ยของแต่ละรายวิชา
  • เก็บเฉพาะรายวิชาที่ตรงตามเงื่อนไขการสรุปที่กำหนด
💡 อ่านก่อนสรุปข้อมูล
NULL หมายถึงยังไม่มีบันทึกคะแนน ส่วน 0 คือคะแนนที่บันทึกไว้ การลงทะเบียนที่ถอนแล้วยังคงอยู่ในตาราง แต่จะไม่นำมารวมในรายงาน

ตัวอย่าง: 12 รายการแรกจาก 36 การลงทะเบียน

ตาราง enrolments ฉบับเต็มมีนักศึกษา 20 คนที่ไม่ซ้ำกันในหกรายวิชา แถวที่ถอนแล้วจำนวน 6 แถวจะถูกกรองออกจากรายงาน ให้เรียกใช้คำสั่งตรวจสอบข้อมูลเพื่อดูทั้ง 36 แถว

การลงทะเบียนนักศึกษาหลักสูตรรายวิชาสถานะคะแนนชั่วโมง
E01S101DSAISQL101active806
E02S102CSSQL101active604
E03S103DSAISQL101activeNULL5
E04S104ITSQL101withdrawn902
E05S101DSAIPY101active908
E06S105CSPY101active506
E07S106DSAIPY101active707
E08S107ITPY101activeNULL3
E09S102CSVIS101active404
E10S108DSAIVIS101activeNULL2
E11S109ITVIS101withdrawn1001
E12S110ITVIS101active01

ทำความเข้าใจคอลัมน์

  • enrolment_id ระบุการลงทะเบียนหนึ่งรายการ ส่วน student_id อาจซ้ำได้
  • score คือคะแนนเต็ม 100 หรือเป็น NULL หากยังไม่มีการบันทึก
  • study_hours บันทึกจำนวนชั่วโมงของการลงทะเบียนนี้
💡 ไวยากรณ์ PostgreSQL
ค่าข้อความใช้เครื่องหมายอัญประกาศเดี่ยว ส่วนตัวเลขและ SQL NULL ไม่ต้องใช้ ปิดท้ายแต่ละคำสั่งด้วยเครื่องหมายอัฒภาค